<?php
// O组 1903010241
namespace app\O_forum_back\controller;
use think\facade\Db;
class Bindeal extends \app\BaseController
{
	// O组 1903010241 
	public function binSecDeal()
	{
        // O组 1903010241 查询板块
        $sec = $this->showSec();
        // O组 1903010241 查询所有放入回收站的版块
        //  O组 1903010241 根据section表的sbin字段为0时，查询出所有数据
        $secCheck=Db::name('section')
                ->field('sname,sid,sremark,sdelat')
                ->order('sdelat','desc')
                ->where('sbin','0')
                ->select();
        //  O组 1903010241 渲染默认模板页面
        return view('',['sec' => $sec,'secC' => $secCheck]);
	}
    // O组 1903010241 版块及关联帖子和回复还原
	public function binSecBack(){
        // O组 1903010241 关联回复还原
        $mesCheck = Db::view('o_mes','mid')
                        ->where('msid',input('sid'))
                        // ->value('mid');
                        ->column('mid');

        // O组 1903010241
        //  O组 1903010241 新建一个变量用来计算res回复表的更新次数
        $a=0;
        foreach($mesCheck as $mCheck){
            // echo $mCheck;
            Db::name('res')
            ->where('rmid',$mCheck)
            ->where('sbin',0)
            ->update(['sbin' => '1']);
            $a+=1;    
        }
        // O组 1903010241 关联帖子还原
        $mesBack=Db::name('mes')
        ->where('msid',input('sid'))
        ->where('sbin',0)
        ->update(['sbin' => '1']);
        // O组 1903010241 版块还原
		$secBack=Db::name('section')
        ->where('sid',input('sid'))
        ->where('sbin','0')
        ->update(['sbin' => '1']);
        //O组 1903010241 判断更新的结果
    if ($a >= 1 || $mesBack >= 1 || $secBack >= 1) {
        $this->success('版块还原成功！','bindeal/binsecdeal');

    }else{
        $this->error('版块还原失败！','bindeal/binsecdeal');
    }
    }

    // O组 1903010241 版块彻底删除操作
    public function binSecDel(){
    //  O组 1903010241 删除版块关联的回复
        $mesCheck = Db::view('o_mes','mid')
                        ->where('msid',input('sid'))
                        ->column('mid');
    //  O组 1903010241 遍历数据集
        foreach($mesCheck as $mCheck){
            $resDel=Db::name('res')
            ->where('rmid',$mCheck)
            ->delete();
        }
   // O组 1903010241 删除版块相关的帖子
        $mesDel=Db::name('mes')
        ->where('msid',input('sid'))
        ->delete();

    // O组 1903010241 删除版块
        $resDel=Db::name('section')
        ->where('sid',input('sid'))
        ->delete();

    // O组 1903010241 判断删除的结果
    if ($resDel >= 1 || $mesDel >= 1 || $secDel >=1) {
        $this->success('版块删除成功！','bindeal/binsecdeal');

    }else{
        $this->error('版块删除成功！','bindeal/binsecdeal');
    }
    }

    // O组 1903010241  帖子回收站
    public function binMesDeal(){
    // O组 1903010241 查询板块
        $sec = $this->showSec();
        $sname = input('sname');
    // O组 1903010241  根据版块的sid查询回收站中该版块的所有帖子
        $req1 = [
            ['o_mes.sbin','like','0'],
            ['o_mes.mbin','like',['0','1'],'OR'],
            ['o_mes.msid','like',input('sid')]
        ];
        $req2 = [
            ['o_mes.sbin','like','1'],
            ['o_mes.mbin','like','0'],
            ['o_mes.msid','like',input('sid')]
        ];
        $mesCheck=Db::view('o_section','sname')
                ->view('o_mes','mid,mtitle,munick,mcreateat,mdelat,mbin,sbin','o_section.sid=o_mes.msid')
    
                ->order('mdelat','desc')
                ->whereOr([$req1,$req2])
                ->select();
    // O组 1903010241 渲染默认模板页面
        return view('',['sec' => $sec,'sname' => $sname ,'mesc' => $mesCheck]);

    }

    //  O组 1903010241 帖子还原
    public function binMesBack(){   
    //   O组 1903010241 帖子关联回复还原（将帖子下的所有回复的mbin修改为1）
        $resBackR=Db::name('res')
        ->where('rmid',input('mid'))
        ->update(['mbin' => '1']);
    // O组 1903010241 将帖子的mbin值修改为1
        $mesBack=Db::name('mes')
        ->where('mid',input('mid'))
        ->update(['mbin' => '1']);
        if ($resBackR >= 1 || $mesBack >= 1) {
            $this->success('帖子还原成功！','bindeal/binSecDeal');

        }else{
            $this->error('版块还原失败！','bindeal/binSecDeal');
        }
    }

    // O组 1903010241 帖子彻底删除
    public function binMesDel(){
    // O组 1903010241 删除帖子相关的回复
        $resDel=Db::name('res')
        ->where('rmid',input('mid'))
        ->delete();

    // O组 1903010241 删除帖子，根据mes表的mid
        $mesDel=Db::name('mes')
        ->where('mid',input('mid'))
        ->delete();
    // O组 1903010241  判断删除的结果
        if ($resDel >= 1 || $mesDel >= 1) {
            $this->success('帖子删除成功！','bindeal/binSecDeal');

        }else{
            $this->error('帖子删除失败！','bindeal/binSecDeal');
        }
    }

    // o组 1903010241 回复回收站
    public function binResDeal(){
        // 查询板块
        $sec = $this->showSec();
        $sname = input('sname');
        //  o组 1903010241 
        $req1 = [
            ['o_res.sbin','like','0'],
            ['o_res.mbin','like','1'],
            ['o_res.rbin','like',['0','1'],'OR'],
            ['o_mes.msid','like',input('sid')]
        ];
        $req2 = [
            ['o_res.sbin','like','0'],
            ['o_res.mbin','like','0'],
            ['o_res.rbin','like',['0','1'],'OR'],
            ['o_mes.msid','like',input('sid')]
        ];
        $req3 = [
            ['o_res.sbin','like','1'],
            ['o_res.mbin','like','0'],
            ['o_res.rbin','like',['0','1'],'OR'],
            ['o_mes.msid','like',input('sid')]
        ];
        $req4 = [
            ['o_res.sbin','like','1'],
            ['o_res.mbin','like','1'],
            ['o_res.rbin','like','0'],
            ['o_mes.msid','like',input('sid')]
        ];
        $resCheck=Db::view('o_section','sname')
                ->view('o_mes','mid,mcreateat,munick,mtitle','o_section.sid=o_mes.msid')
                ->view('o_res','rid,rcontent,rdelat,sbin,mbin,rbin','o_mes.mid=o_res.rmid')
                ->order('rdelat','desc')
                ->whereOr([$req1,$req2,$req3,$req4])
                ->select();
        return view('',['sec' => $sec ,'sname' => $sname , 'resc' => $resCheck ]);
    }

    // o组 1903010241 回复还原
    public function binResBack(){
    // o组 1903010241 回复还原（将res中的rbin修改为1）
        $resBack=Db::name('res')
        ->where('rid',input('rid'))
        ->update(['rbin' => '1']);
    // o组 1903010241 判断更新的结果
        if ($resBack >= 1) {
            $this->success('回复还原成功！','bindeal/binSecDeal');

        }else{
            $this->error('回复还原失败！','bindeal/binSecDeal');
        }

    }

    // o组 1903010241 回复删除
    public function binResDel(){
        $resDel=Db::name('res')
    // o组 1903010241 根据rid删除
        ->where('rid',input('rid'))
        ->delete();
    //  o组 1903010241 判断删除的结果
        if ($resDel >= 1) {
            $this->success('回复彻底删除成功！','bindeal/binSecDeal');

        }else{
            $this->error('回复彻底删除失败！','bindeal/binSecDeal');
        }
        
    }
}
